package cn.zwk.domain.system.model.dto;

import cn.zwk.common.group.InsertGroup;
import cn.zwk.common.group.UpdateGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Null;
import lombok.Data;

import java.io.Serializable;

@Data
public class MenuDTO implements Serializable {
    private static final long serialVersionUID = 1;
    /**
     * ID
     */
    @Null(groups = InsertGroup.class,message = "新增时id必须为空")
    @NotBlank(groups = UpdateGroup.class,message = "修改时id不能为空")
    private Long id;
    /**
     * 父菜单ID
     */
    private Long parentId;
    /**
     * 菜单名称
     */
    private String name;
    /**
     * 菜单类型（1：菜单，2：目录，3：外链，4：按钮）
     */
    private Integer type;
    /**
     * 路由参数
     */
    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
    private String params;
    /**
     * 路由路径（页面对应的浏览器 URL 路径）
     */
    private String path;
    /**
     * 组件的唯一标识
     */
    private String componentId;
    /**
     * 页面标识
     */
    private String perm;
    /**
     * 【目录】只有一个子路由是否始终显示（1：是，0：否）
     */
    private Integer alwaysShow;
    /**
     * 【菜单】是否开启页面缓存（1：是，0：否）
     */
    private Integer keepAlive;
    /**
     * 显示状态（1：显示，0：隐藏）
     */
    private Integer visible;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * 跳转路径
     */
    private String redirect;
}
